package com.ssy.lingxi.after.sale.model.vo.request;

import com.ssy.lingxi.after.sale.model.bo.ProofFileBO;
import com.ssy.lingxi.after.sale.model.bo.ReceiveGoodsBO;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * 保存换货VO
 * @author 伍将
 * @date 2020/9/11
 * @version 2.0.0
 */
public class ReplaceGoodsSaveVO implements Serializable {
    private static final long serialVersionUID = 7759775016697770556L;

    /**
     * 供应商会员id
     */
    @NotNull(message = "供应商会员id要大于0")
    @Positive(message = "供应商会员id要大于0")
    private Long supplierMemberId;

    /**
     * 供应商角色id
     */
    @NotNull(message = "供应商角色Id要大于0")
    @Positive(message = "供应商角色Id要大于0")
    private Long supplierRoleId;

    /**
     * 供应商名称
     */
    @NotBlank(message = "供应商名称不能为空")
    private String supplierMemberName;

    /**
     * 换货id（新增时为0，修改时为原标识id）
     */
    private Long replaceId;

    /**
     * 申请单摘要
     */
    @NotBlank(message = "申请单摘要不能为空")
    @Size(max = 60, message = "申请单摘要最长60个字符")
    private String applyAbstract;

    /**
     * 工作流类型：默认-20，手工发货-30，[废弃：45-合同审核，46-合同手工发货审核]
     */
    private Integer taskType;
    /**
     * 工作流类型：来源于订单商品
     */
    @NotNull(message = "工作流类型不能为空")
    private String taskTypeKey;

    /**
     * 订单类型：1.询价采购2.需求采购3.现货采购4.集采5.渠道直采6.渠道现货7.积分兑换8.渠道积分兑换
     */
    @NotNull(message = "订单类型不能为空")
    private Integer orderType;

    /**
     * 换货收货地址
     */
    @Valid
    @NotNull(message = "换货收货地址不能为空")
    private ReceiveGoodsBO replaceGoodsAddress;

    /**
     * 换货退货地址
     */
    @Valid
    @NotNull(message = "换货收货地址不能为空")
    private ReceiveGoodsBO returnGoodsAddress;

    /**
     * 相关故障原因附件
     */
    @Valid
    private List<ProofFileBO> proofFileList;

    /**
     * 换货货物列表
     */
    @Valid
    @NotNull(message = "换货货物不能为空")
    @Size(min = 1, message = "至少有一个换货货物")
    private List<ReplaceGoodsDetailSaveVO> replaceGoodsList;

    /**
     * 换货原因
     */
    @Size(max = 60, message = "换货原因不能超过60个字符")
    private String replaceReason;

    /**
     * 店铺id
     */
    private Long shopId;
    /**
     * 店铺logo
     */
    private String shopLogo;
    /**
     * 店铺名称
     */
    private String shopName;

    /**
     * AgentFlagEnum
     * 代客标识: 0 - 非代客； 1 - 代客
     */
    private Integer agentFlag;

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public Integer getTaskType() {
        return taskType;
    }

    public void setTaskType(Integer taskType) {
        this.taskType = taskType;
    }

    public String getTaskTypeKey() {
        return taskTypeKey;
    }

    public void setTaskTypeKey(String taskTypeKey) {
        this.taskTypeKey = taskTypeKey;
    }

    public String getSupplierMemberName() {
        return supplierMemberName;
    }

    public void setSupplierMemberName(String supplierMemberName) {
        this.supplierMemberName = supplierMemberName;
    }

    public Long getSupplierMemberId() {
        return supplierMemberId;
    }

    public void setSupplierMemberId(Long supplierMemberId) {
        this.supplierMemberId = supplierMemberId;
    }

    public Long getSupplierRoleId() {
        return supplierRoleId;
    }

    public void setSupplierRoleId(Long supplierRoleId) {
        this.supplierRoleId = supplierRoleId;
    }

    public Long getReplaceId() {
        return replaceId;
    }

    public void setReplaceId(Long replaceId) {
        this.replaceId = replaceId;
    }

    public String getApplyAbstract() {
        return applyAbstract;
    }

    public void setApplyAbstract(String applyAbstract) {
        this.applyAbstract = applyAbstract;
    }

    public ReceiveGoodsBO getReplaceGoodsAddress() {
        return replaceGoodsAddress;
    }

    public void setReplaceGoodsAddress(ReceiveGoodsBO replaceGoodsAddress) {
        this.replaceGoodsAddress = replaceGoodsAddress;
    }

    public ReceiveGoodsBO getReturnGoodsAddress() {
        return returnGoodsAddress;
    }

    public void setReturnGoodsAddress(ReceiveGoodsBO returnGoodsAddress) {
        this.returnGoodsAddress = returnGoodsAddress;
    }

    public List<ProofFileBO> getProofFileList() {
        return proofFileList;
    }

    public void setProofFileList(List<ProofFileBO> proofFileList) {
        this.proofFileList = proofFileList;
    }

    public List<ReplaceGoodsDetailSaveVO> getReplaceGoodsList() {
        return replaceGoodsList;
    }

    public void setReplaceGoodsList(List<ReplaceGoodsDetailSaveVO> replaceGoodsList) {
        this.replaceGoodsList = replaceGoodsList;
    }

    public String getReplaceReason() {
        return replaceReason;
    }

    public void setReplaceReason(String replaceReason) {
        this.replaceReason = replaceReason;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public String getShopLogo() {
        return shopLogo;
    }

    public void setShopLogo(String shopLogo) {
        this.shopLogo = shopLogo;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Integer getAgentFlag() {
        return agentFlag;
    }

    public void setAgentFlag(Integer agentFlag) {
        this.agentFlag = agentFlag;
    }
}
